﻿using StoreSQLSugar_.DBUtility;
using StoreSQLSugar.Models;
using System;
using System.Windows.Forms;

namespace StoreSQLSugar.Forms
{
    // T指添加或编辑的实体类型
    public partial class BaseAddEditFrm<T> : Form where T : Base
    {
        #region 子窗体可以调用的代码
        // 编辑时的主键值
        public int EditId { get; private set; }
        // 编辑时的实体
        public T editModel { get; set; }
        // 窗体的文本
        public string FormText { get; set; }

        public BaseAddEditFrm()
        {
            InitializeComponent();
        }

        public BaseAddEditFrm(int editId)
        {
            InitializeComponent();
            EditId = editId;
            Load += UserAddEditFrm_Load;
            btnSave.Click += btnSave_Click;
        }
        #endregion

        #region 子窗体不能调用的代码
        private void UserAddEditFrm_Load(object sender, EventArgs e)
        {
            if (EditId == 0)
            {
                Text = $"添加{FormText}";
                btnSave.Text = "添加";

                ClearAll();
            }
            else
            {
                Text = $"修改{FormText}";
                btnSave.Text = "编辑";

                editModel = SqlSugarHelper.Db.Queryable<T>().InSingle(EditId);
                if (editModel != null)
                {
                    ShowOldValue();
                }
            }
        }
        #endregion

        #region 子窗体必须重写的代码
        // 清空所有控件文本
        public virtual void ClearAll() { }

        // 编辑时显示修改前的文本
        public virtual void ShowOldValue() { }

        // 添加或编辑逻辑
        public virtual void btnSave_Click(object sender, EventArgs e)
        {
        }
        #endregion
    }
}
